From: Keir Fraser Date: Tue, 31 Mar 2009 10:27:10 +0000 (+0100) Subject: xend: Fix scsi_id for pvSCSI X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~13989^2~63 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=23d864769a614ec5ae094b0deddb67fe674d2aa6;p=xen.git xend: Fix scsi_id for pvSCSI pvSCSI allocations fail if the version of udev in a host OS is relatively new. I have not been able to detect the failure because I have used udev of the version 095. The failure occurs by an incompatibility problem of scsi_id command included udev. This patch tackles the incompatibility problem. Signed-off-by: Masaki Kanno --- diff --git a/tools/python/xen/util/vscsi_util.py b/tools/python/xen/util/vscsi_util.py index 3b8d0536a8..a61f10455a 100644 --- a/tools/python/xen/util/vscsi_util.py +++ b/tools/python/xen/util/vscsi_util.py @@ -36,6 +36,11 @@ SYSFS_SCSI_DEV_TYPEID_PATH = '/type' SYSFS_SCSI_DEV_REVISION_PATH = '/rev' SYSFS_SCSI_DEV_SCSILEVEL_PATH = '/scsi_level' +SCSI_ID_COMMANDS = [ + "/lib/udev/scsi_id -gu --sg-version 3 -d /dev/%s 2>/dev/null", + "/sbin/scsi_id -gu -s /class/scsi_generic/%s 2>/dev/null" +] + def _vscsi_get_devname_by(name, scsi_devices): """A device name is gotten by the HCTL. (e.g., '0:0:0:0' to '/dev/sda') @@ -79,9 +84,10 @@ def _vscsi_get_hctl_by(phyname, scsi_devices): def _vscsi_get_scsiid(sg): - scsi_id = os.popen('/sbin/scsi_id -gu -s /class/scsi_generic/' + sg).read().split() - if len(scsi_id): - return scsi_id[0] + for scsi_id_command in SCSI_ID_COMMANDS: + scsi_id = os.popen(scsi_id_command % sg).read().split() + if len(scsi_id): + return scsi_id[0] return None